#include <iostream>
#include <cstring>
using namespace std;
class mystring
{
private:
	char*buf;
public:
	mystring();
	~mystring();
	mystring(const char*);
	mystring(const mystring&);
	const char* getmystring()const;
	void append(const mystring&);
	bool isequal(const mystring&)const;
	void swap(mystring&);
	friend mystring operator+(mystring&,mystring&);
	mystring& operator+=(const mystring&);
	mystring& operator=(const mystring&);
	bool operator==(const mystring&);



	void show(){cout << buf << endl;}
};
//***************************************************************************
/*{{{*/
mystring::mystring(){
	buf=NULL;
}

mystring::~mystring(){
	delete[] buf;
	buf=NULL;
}

mystring::mystring(const char*str){
	buf=new char(strlen(str)+1);
	cout << &buf << endl;
	strcpy(buf,str);
}

mystring::mystring(const mystring&r){
	delete[] buf;
	buf=new char(strlen(r.buf)+1);
	strcpy(buf,r.buf);
}

const char* mystring::getmystring()const{
	return buf;
}

void mystring::append(const mystring&str){
	int len=strlen(buf)+strlen(str.buf)+1;
	char*temp=new char(len);
	strcpy(temp,buf);
	strcat(temp,str.buf);
	delete[] buf;
	buf=temp;
	temp=NULL;
}

bool mystring::isequal(const mystring&str)const{
	if(strcmp(buf,str.buf)==0)
		return true;
	return false;
}

void mystring::swap(mystring&str){
	char*temp=buf;
	buf=str.buf;
	str.buf=temp;
	temp=NULL;
}
mystring operator+(mystring&a,mystring&b){
	mystring temp;
	temp.buf=new char(strlen(a.buf)+strlen(b.buf)+1);
	strcpy(temp.buf,a.buf);
	strcat(temp.buf,b.buf);
	return temp;
}
mystring& mystring::operator+=(const mystring&t){
	char*temp=buf;
	buf=new char[strlen(temp)+strlen(t.buf)+1];
	strcpy(buf,temp);
	strcat(buf,t.buf);
	delete[] temp;
	cout << buf << endl;
	return *this;
}
mystring& mystring::operator=(const mystring&t){
	if(this==&t)return *this;
	buf=new char[strlen(t.buf)+1];
	strcpy(buf,t.buf);
	cout << "拷贝完成" << endl;
	return *this;
}
/*}}}*/
bool mystring:: operator==(const mystring&t){
	cout << "开始比对" << endl;
	if(strcmp(buf,t.buf)==0)
		return true;
	return false;
}


int main()
{
	mystring a("1233");
	mystring d=("*99999");
	a=d;
	d.show();
	if(a==d)
		cout << "11" << endl;

	

	return 0;
}

